package com.canaan.business.domain.storehouse;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.canaan.common.annotation.Excel;
import com.canaan.common.annotation.TableName;
import com.canaan.common.core.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.Date;
import java.util.List;

/**
 * 库存对象 wms_storehouse_stock
 *
 * @author ruoyi
 * @date 2022-11-30
 */
@TableName("wms_storehouse_stock")
@Data
public class WmsStorehouseStock extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** ID */
    private Long id;

    /** 物料编码 */
    @Excel(name = "物料编码")
    private String productNo;

    /** 物料名称 */
    @Excel(name = "物料名称")
    private String productName;

    /** 条码号 */
    @Excel(name = "条码")
    private String barcode;

    /** 库位编号 */
    @Excel(name = "库位编号")
    private String storehouseLocationNo;

    /** 库区编号 */
    @Excel(name = "库区编号")
    private String storehouseAreaNo;

    /** 仓库编号 */
    @Excel(name = "仓库编号")
    private String storehouseNo;

    /** 库存数量 */
    @Excel(name = "库存数量")
    private Long qty;

    /** 单位 */
    @Excel(name = "单位")
    private String company;

    /** 物料批次 */
    @Excel(name = "批次号")
    private String batchNo;

    /** 库存状态
     正常：NORMAL（可用可动）
     锁定：LOCK（不可用不可动）
     冻结：FREEZE（不可用可动） */
    @Excel(name = "库存状态")
    private String status;

    /**
     * 生产日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
//    @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date productionDate;

    /**
     * 有效天数
     */
    @Excel(name = "有效天数")
    private Integer validDateNum;

    /**
     * 有效日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "有效期至",width = 30, dateFormat = "yyyy-MM-dd")
    private Date effectiveDate;

    /**
     * 供应商名称
     */
//    @Excel(name = "供应商名称")
    private String supplierName;

    /**
     * 订单号
     */
//    @Excel(name = "订单号")
    private String orderNo;

    /**
     * 工单号
     */
//    @Excel(name = "工单号")
    private String workOrderNo;

    /**
     * 创建人
     */
//    @Excel(name = "创建人")
    private String createBy;

    /**
     * 创建时间
     */
//    @Excel(name = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 最后更新人
     */
//    @Excel(name = "最后更新人")
    private String updateBy;

    /**
     * 最后更新时间
     */
//    @Excel(name = "最后更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /** 编号 */
    private String no;

    /** 物料版本 */
    private String productVersion;

    /** 占用数量 */
    private Long occupyQty;

    /** 是否盘库锁定 */
    private String isCheckLock;

    /**质检状态：UNCHECKED(未检验)，CHECKED(已检验)**/
    private String qualityStatus;

    /**质检任务号**/
    private String qualityTaskNo;

    /** 是否删除：1是 0否 */
    private String delFlag;
    /**
     * 库存状态
     */
    private String stockStatus;
    /**
     * 托盘号
     */
    private String trayNo;
    /**
     * 入库日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
//    @Excel(name = "到时时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date arriveTime;

    /**
     * 联合查询如：可传入物料编号或批次号进行查询
     */
    private String unionData;

    /**
     * 是否备料区，Y是 N否
     */
    private String whetherMp;


    private List<String> barcodes;

    private List<Long> ids;

    /**
     * 容器编号
     */
    @Excel(name = "容器编号")
    private String containerNo;

    /**
     * 容器类型 ，非数据库字段
     */
    private String containerType;

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("no", getNo())
            .append("storehouseNo", getStorehouseNo())
            .append("storehouseAreaNo", getStorehouseAreaNo())
            .append("storehouseLocationNo", getStorehouseLocationNo())
            .append("barcode", getBarcode())
            .append("productNo", getProductNo())
            .append("productVersion", getProductVersion())
            .append("productName", getProductName())
            .append("batchNo", getBatchNo())
            .append("qty", getQty())
            .append("company", getCompany())
            .append("status", getStatus())
            .append("isCheckLock", getIsCheckLock())
            .append("remark", getRemark())
            .append("stockStatus", getStockStatus())
            .append("trayNo", getTrayNo())
            .append("delFlag", getDelFlag())
            .append("createBy", getCreateBy())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("createTime", getCreateTime())
            .append("arriveTime",getArriveTime())
            .toString();
    }

}
